A L
INUX
CD
ROM
standard
David van Leeuwen
david@tm.tno.nl
Introduction
Standardizing through another software level
Open
(
kdev
t
dev
,
int
purpose
)
Release
(
kdev
t
dev
)
Open
f
iles
(
kdev
t
dev
)
Drive
s
tatus
(
kdev
t
dev
)
Disc
s
tatus
(
kdev
t
dev
)
Media
c
hanged
(
dev
dev
)
Tray
m
ove
(
kdev
t
dev
,
int
position
)
Lock
d
oor
(
kdev
t
dev
,
int
lock
)
Select
s
peed
(
kdev
t
dev
,
int
speed
)
Select
d
isc
(
kdev
t
dev
,
int
number
)
Get
l
ast
s
ession
(
kdev
t
dev
,
struct
cdrom
m
ultisession
*
ms
i
nfo
)
Get
m
cn
(
kdev
t
dev
,
struct
cdrom
m
cn
*
mcn
)
Reset
(
kdev
t
dev
)
Audio
i
octl
(
kdev
t
dev
,
unsigned
int
cmd
,
void
*
arg
)
Dev
i
octl
(
kdev
t
dev
,
unsigned
int
cmd
,
unsigned
long
I>arg)
CD
ROM
capabilities
Options
The need to know the purpose of opening
And what about standards?
The preferred strategy of
open
()
Description of routines in
cdrom.c
struct
file
o
perations
cdrom
f
ops
Int
register
c
drom
(
int
major
,
char
*
name
,
struct
I>cdrom
d
evice
o
ps
*
cdo
)
Int
unregister
c
drom
(
int
major
,
char
*
name
)
Int
cdrom
o
pen
(
struct
inode
*
ip
,
struct
file
*
fp
)
Void
cdrom
r
elease
(
struct
inode
*
ip
,
struct
file
*
fp
)
Int
cdrom
i
octl
(
struct
inode
*
ip
,
struct
file
*
fp
,
unsigned
int
cmd
,
unsigned
long
arg
)
Directly implemented
ioctl
s
Ioctl
s rooted through
audio
i
octl
()
New
ioctl
s in
cdrom.c
Device dependent
ioct
s
How to update your driver
Thanks